.TH "generic linked-list data handling with a string as a key." 3 "30 Jun 2005" "Version 5.2.1.rc3" "net-snmp" \" -*- nroff -*-
.ad l
.nh
.SH NAME
generic linked-list data handling with a string as a key. \- 
.SS "Functions"

.in +1c
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_free_list_data\fP (\fBnetsnmp_data_list\fP *node)"
.br
.RI "\fIfrees the data and a name at a given data_list node. \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_free_all_list_data\fP (\fBnetsnmp_data_list\fP *head)"
.br
.RI "\fIfrees all data and nodes in a list. \fP"
.ti -1c
.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_create_data_list\fP (const char *name, void *data, Netsnmp_Free_List_Data *beer)"
.br
.RI "\fIadds creates a data_list node given a name, data and a free function ptr. \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_add_list_data\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *node)"
.br
.RI "\fIdepreciated: use \fBnetsnmp_data_list_add_node()\fP \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_data_list_add_node\fP (\fBnetsnmp_data_list\fP **head, \fBnetsnmp_data_list\fP *node)"
.br
.RI "\fIadds data to a datalist \fP"
.ti -1c
.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_data_list_add_data\fP (\fBnetsnmp_data_list\fP **head, const char *name, void *data, Netsnmp_Free_List_Data *beer)"
.br
.RI "\fIadds data to a datalist \fP"
.ti -1c
.RI "NETSNMP_INLINE void * \fBnetsnmp_get_list_data\fP (\fBnetsnmp_data_list\fP *head, const char *name)"
.br
.RI "\fIreturns a data_list node's data for a given name within a data_list \fP"
.ti -1c
.RI "NETSNMP_INLINE \fBnetsnmp_data_list\fP * \fBnetsnmp_get_list_node\fP (\fBnetsnmp_data_list\fP *head, const char *name)"
.br
.RI "\fIreturns a data_list node for a given name within a data_list \fP"
.ti -1c
.RI "int \fBnetsnmp_remove_list_node\fP (\fBnetsnmp_data_list\fP **realhead, const char *name)"
.br
.RI "\fIRemoves a named node from a data_list (and frees it). \fP"
.ti -1c
.RI "void \fBnetsnmp_register_save_list\fP (\fBnetsnmp_data_list\fP **datalist, const char *type, const char *token, Netsnmp_Save_List_Data *data_list_save_ptr, Netsnmp_Read_List_Data *data_list_read_ptr, Netsnmp_Free_List_Data *data_list_free_ptr)"
.br
.RI "\fIregisters to store a data_list set of data at persistant storage time \fP"
.ti -1c
.RI "int \fBnetsnmp_save_all_data_callback\fP (int major, int minor, void *serverarg, void *clientarg)"
.br
.RI "\fIintended to be registerd as a callback operation. \fP"
.ti -1c
.RI "int \fBnetsnmp_save_all_data\fP (\fBnetsnmp_data_list\fP *head, const char *type, const char *token, Netsnmp_Save_List_Data *data_list_save_ptr)"
.br
.RI "\fIintended to be called as a callback during persistent save operations. \fP"
.ti -1c
.RI "void \fBnetsnmp_read_data_callback\fP (const char *token, char *line)"
.br
.RI "\fIintended to be registerd as a .conf parser It should be registered using: \fP"
.in -1c
.SH "Function Documentation"
.PP 
.SS "NETSNMP_INLINE void netsnmp_add_list_data (\fBnetsnmp_data_list\fP ** head, \fBnetsnmp_data_list\fP * node)"
.PP
depreciated: use \fBnetsnmp_data_list_add_node()\fP 
.PP
Definition at line 83 of file data_list.c.
.PP
References netsnmp_data_list_add_node().
.PP
Referenced by netsnmp_data_list_add_data(), netsnmp_read_data_callback(), netsnmp_register_auto_data_table(), netsnmp_register_handler_by_name(), netsnmp_register_save_list(), and netsnmp_request_add_list_data().
.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_create_data_list (const char * name, void * data, Netsnmp_Free_List_Data * beer)"
.PP
adds creates a data_list node given a name, data and a free function ptr. 
.PP
\fBParameters:\fP
.RS 4
\fIname\fP the name of the node to cache the data. 
.br
\fIdata\fP the data to be stored under that name 
.br
\fIbeer\fP A function that can free the data pointer (in the future) 
.RE
.PP
\fBReturns:\fP
.RS 4
a newly created data_list node which can be given to the netsnmp_add_list_data function. 
.RE
.PP

.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.PP
Definition at line 64 of file data_list.c.
.PP
References netsnmp_data_list_s::data, netsnmp_data_list_s::free_func, and netsnmp_data_list_s::name.
.PP
Referenced by netsnmp_cache_reqinfo_insert(), netsnmp_data_list_add_data(), netsnmp_insert_iterator_context(), netsnmp_insert_table_row(), netsnmp_old_api_helper(), netsnmp_read_data_callback(), netsnmp_register_auto_data_table(), netsnmp_register_handler_by_name(), netsnmp_register_save_list(), netsnmp_stash_cache_update(), netsnmp_table_data_helper_handler(), netsnmp_table_data_set_helper_handler(), netsnmp_table_iterator_helper_handler(), and table_helper_handler().
.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_data_list_add_data (\fBnetsnmp_data_list\fP ** head, const char * name, void * data, Netsnmp_Free_List_Data * beer)"
.PP
adds data to a datalist 
.PP
\fBParameters:\fP
.RS 4
\fIhead\fP a pointer to the head node of a data_list 
.br
\fIname\fP the name of the node to cache the data. 
.br
\fIdata\fP the data to be stored under that name 
.br
\fIbeer\fP A function that can free the data pointer (in the future) 
.RE
.PP
\fBReturns:\fP
.RS 4
a newly created data_list node which was inserted in the list 
.RE
.PP

.PP
Definition at line 137 of file data_list.c.
.PP
References netsnmp_add_list_data(), netsnmp_create_data_list(), and snmp_log().
.SS "NETSNMP_INLINE void netsnmp_data_list_add_node (\fBnetsnmp_data_list\fP ** head, \fBnetsnmp_data_list\fP * node)"
.PP
adds data to a datalist 
.PP
\fBParameters:\fP
.RS 4
\fIhead\fP a pointer to the head node of a data_list 
.br
\fInode\fP a node to stash in the data_list 
.RE
.PP

.PP
Definition at line 93 of file data_list.c.
.PP
References netsnmp_data_list_s::name, netsnmp_data_list_s::next, and snmp_log().
.PP
Referenced by netsnmp_add_list_data().
.SS "NETSNMP_INLINE void netsnmp_free_all_list_data (\fBnetsnmp_data_list\fP * head)"
.PP
frees all data and nodes in a list. 
.PP
\fBParameters:\fP
.RS 4
\fIhead\fP the top node of the list to be freed. 
.RE
.PP

.PP
Definition at line 46 of file data_list.c.
.PP
References netsnmp_free_list_data(), and netsnmp_data_list_s::next.
.PP
Referenced by netsnmp_clear_handler_list(), and netsnmp_free_request_data_sets().
.SS "NETSNMP_INLINE void netsnmp_free_list_data (\fBnetsnmp_data_list\fP * node)"
.PP
frees the data and a name at a given data_list node. 
.PP
Note that this doesn't free the node itself. 
.PP
\fBParameters:\fP
.RS 4
\fInode\fP the node for which the data should be freed 
.RE
.PP

.PP
Definition at line 30 of file data_list.c.
.PP
References netsnmp_data_list_s::data, netsnmp_data_list_s::free_func, and netsnmp_data_list_s::name.
.PP
Referenced by netsnmp_free_all_list_data(), netsnmp_free_request_data_set(), and netsnmp_remove_list_node().
.SS "NETSNMP_INLINE void* netsnmp_get_list_data (\fBnetsnmp_data_list\fP * head, const char * name)"
.PP
returns a data_list node's data for a given name within a data_list 
.PP
\fBParameters:\fP
.RS 4
\fIhead\fP the head node of a data_list 
.br
\fIname\fP the name to find 
.RE
.PP
\fBReturns:\fP
.RS 4
a pointer to the data cached at that node 
.RE
.PP

.PP
Definition at line 157 of file data_list.c.
.PP
References netsnmp_data_list_s::data, netsnmp_data_list_s::name, and netsnmp_data_list_s::next.
.PP
Referenced by netsnmp_read_data_callback(), and netsnmp_request_get_list_data().
.SS "NETSNMP_INLINE \fBnetsnmp_data_list\fP* netsnmp_get_list_node (\fBnetsnmp_data_list\fP * head, const char * name)"
.PP
returns a data_list node for a given name within a data_list 
.PP
\fBParameters:\fP
.RS 4
\fIhead\fP the head node of a data_list 
.br
\fIname\fP the name to find 
.RE
.PP
\fBReturns:\fP
.RS 4
a pointer to the data_list node 
.RE
.PP

.PP
Definition at line 173 of file data_list.c.
.PP
Referenced by netsnmp_table_iterator_helper_handler().
.SS "void netsnmp_read_data_callback (const char * token, char * line)"
.PP
intended to be registerd as a .conf parser It should be registered using: 
.PP
register_app_config_handler('token', netsnmp_read_data_callback, XXX)
.PP
where INFO_POINTER is a pointer to a netsnmp_data_list_saveinfo object containing apporpriate registration information 
.PP
Definition at line 321 of file data_list.c.
.PP
References netsnmp_add_list_data(), netsnmp_create_data_list(), netsnmp_get_list_data(), read_config_read_data(), and snmp_log().
.PP
Referenced by netsnmp_register_save_list().
.SS "void netsnmp_register_save_list (\fBnetsnmp_data_list\fP ** datalist, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr, Netsnmp_Read_List_Data * data_list_read_ptr, Netsnmp_Free_List_Data * data_list_free_ptr)"
.PP
registers to store a data_list set of data at persistant storage time 
.PP
\fBParameters:\fP
.RS 4
\fIdatalist\fP the data to be saved 
.br
\fItype\fP the name of the application to save the data as. If left NULL the default application name that was registered during the init_snmp call will be used (recommended). 
.br
\fItoken\fP the unique token identifier string to use as the first word in the persistent file line. 
.br
\fIdata_list_save_ptr\fP a function pointer which will be called to save the rest of the data to a buffer. 
.br
\fIdata_list_read_ptr\fP a function pointer which can read the remainder of a saved line and return the application specific void * pointer. 
.br
\fIdata_list_free_ptr\fP a function pointer which will be passed to the data node for freeing it in the future when/if the list/node is cleaned up or destroyed.
.RE
.PP
\fBTodo\fP
.RS 4
netsnmp_register_save_list should handle the same token name being saved from different types? 
.RE
.PP

.PP
Definition at line 220 of file data_list.c.
.PP
References netsnmp_add_list_data(), netsnmp_create_data_list(), netsnmp_read_data_callback(), netsnmp_save_all_data_callback(), register_config_handler(), snmp_log(), and snmp_register_callback().
.SS "int netsnmp_remove_list_node (\fBnetsnmp_data_list\fP ** realhead, const char * name)"
.PP
Removes a named node from a data_list (and frees it). 
.PP
\fBParameters:\fP
.RS 4
\fIrealhead\fP a pointer to the head node of a data_list 
.br
\fIname\fP the name to find and remove 
.RE
.PP
\fBReturns:\fP
.RS 4
0 on successful find-and-delete, 1 otherwise. 
.RE
.PP

.PP
Definition at line 189 of file data_list.c.
.PP
References netsnmp_data_list_s::name, netsnmp_free_list_data(), and netsnmp_data_list_s::next.
.PP
Referenced by netsnmp_request_remove_list_data().
.SS "int netsnmp_save_all_data (\fBnetsnmp_data_list\fP * head, const char * type, const char * token, Netsnmp_Save_List_Data * data_list_save_ptr)"
.PP
intended to be called as a callback during persistent save operations. 
.PP
See the netsnmp_save_all_data_callback for where this is typically used. 
.PP
Definition at line 286 of file data_list.c.
.PP
References netsnmp_data_list_s::data, netsnmp_data_list_s::name, netsnmp_data_list_s::next, and read_config_store().
.PP
Referenced by netsnmp_save_all_data_callback().
.SS "int netsnmp_save_all_data_callback (int major, int minor, void * serverarg, void * clientarg)"
.PP
intended to be registerd as a callback operation. 
.PP
It should be registered using:
.PP
snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA, netsnmp_save_all_data_callback, INFO_POINTER);
.PP
where INFO_POINTER is a pointer to a netsnmp_data_list_saveinfo object containing apporpriate registration information 
.PP
Definition at line 269 of file data_list.c.
.PP
References netsnmp_save_all_data(), and snmp_log().
.PP
Referenced by netsnmp_register_save_list().
